const formatDate = (date, fmt) => {
  date = new Date(date)
  if (typeof fmt === 'undefined') {
    fmt = 'yyyy-MM-dd HH:mm:ss'
  }
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(
      RegExp.$1,
      (date.getFullYear() + '').substr(4 - RegExp.$1.length)
    )
  }
  const o = {
    Y: date.getFullYear(),
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'H+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds()
  }
  for (const k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      const str = o[k] + ''
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length === 1 ? str : ('00' + str).substr(str.length)
      )
    }
  }
  return fmt
}
const compareDate = (timestamp, day = 0) => {
  // timestamp 为要传入的时间戳
  // day 为要减去的日子 因为比较*当天*的话，是不需要减的，所以默认定义成0,

  // 根据上面分析，有些需要参数`time`，有些不需要，所以使用一个函数来区分一下
  const newDate = (time = null) => {
    return time === null ? new Date() : new Date(time)
  }

  // 这里返回 比较后的值，比较成功，则返回`true`，失败则返回`false`
  return (
    newDate(timestamp).getDate() === newDate().getDate() - day && newDate(timestamp).getMonth() === newDate().getMonth() && newDate(timestamp).getYear() === newDate().getYear()
  )
}

export { compareDate, formatDate }
